package ru.zombator.taskman.dbadmin.actions;

import java.lang.reflect.InvocationTargetException;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;

import ru.zombator.taskman.dbadmin.AdminApp;

public class RefreshListAction extends ASimpleAction {
	private static final String ACTION_ID = "ru.zombator.taskman.dbadmin.refreshList";
	
	@Override
	public String getId() {
		return ACTION_ID;
	}
	
	public RefreshListAction(AdminApp mainApp) {
		super(mainApp);
	}
	
	@Override
	protected String getImageName() {
		return null;
	}
	
	@Override
	public String getText() {
		return "Обновить список";
	}
	
	@Override
	public void run() {
		UpdateTask task = new UpdateTask(mainApp.getClient());
		try {
			new ProgressMonitorDialog(mainApp.getShell()).run(true, false, task);
		} catch (InvocationTargetException e) {
			MessageDialog.openError(mainApp.getShell(), "Ошибка",
					"Не удалось загрузить данные о пользователях." +
					(e.getCause().getMessage() != null ? "\n" + e.getCause().getMessage() : ""));
		} catch (InterruptedException e) {
			// выполнение было отменено, что невозможно
			// (мы поставили флаг cancelable=false)
		}
		
		mainApp.getLocalUserList().clear();
		mainApp.getLocalUserList().addAll(task.getResults());
		mainApp.getUsersTable().setInput(mainApp.getLocalUserList());
	}
}